#include "messagechat.h"

MessageChat::MessageChat(QWidget* parent)
    :QListWidget(parent)
{
//    // 初始时不显示滚动条
    //setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    //setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    setStyleSheet(
                "QScrollBar:vertical {"
                "    background: transparent;"  // 滚动条轨道透明
                "    width: 8px;"              // 保留滚动条占位空间（避免内容抖动）
                "}"
                "QScrollBar::handle:vertical {"
                "    background: rgba(0, 0, 0, 0);" // 滑块全透明
                "    border: none;"                 // 去除边框
                "    min-height: 10px;"             // 防止滑块高度为0（无意义但需保留）
                "}"
                "QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {"
                "height: 0px; /* 移除上下按钮 */"
                "border: none; /* 移除边框 */"
                "background: transparent; /* 背景透明 */"
                "}"
                "QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {"
                "    background: none;"             // 隐藏滑块外的轨道区域
                "}");
}

void MessageChat::removeAllItem()
{
    // 禁用界面刷新
        setUpdatesEnabled(false);
        blockSignals(true); // 阻塞信号
        // 反向遍历确保安全（推荐从尾部开始删除）
        while(count() > 0)
        {
            // 获取列表项
            QListWidgetItem* item = takeItem(count() - 1); // 从最后一项开始取

            // 删除关联的 widget
            if(QWidget* widget = itemWidget(item))
            {
                // 重要！必须先移除 widget 再删除 item
                removeItemWidget(item);  // 解除关联
                widget->deleteLater();   // 安全删除 QWidget 派生对象
            }

            // 删除列表项
            delete item; // 触发 QListWidgetItem 析构
        }
        // 可选：强制清空底层数据
        clear(); // 二次确认清空
        // 恢复状态
        blockSignals(false);
        setUpdatesEnabled(true);
        // 立即触发界面更新
        viewport()->update();
}


void MessageChat::enterEvent(QEvent *event)
{
//    // 鼠标进入时显示滚动条
    //setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
//    //setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    setStyleSheet(
                "QScrollBar:vertical {"
                    "background: transparent; /* 将轨道背景设置为透明 */"
                   " width: 8px; /* 滚动条宽度，根据需要调整 */"
                    "margin: 0px; /* 移除滚动条与滑块之间的间距 */"
                "}"

                "QScrollBar::handle:vertical {"
                    "background: rgb(173,170,169); /* 滑块颜色 */"
                    "min-height: 10px; /* 滑块最小高度，根据需要调整 */"
                    "border-radius: 4px; /* 滑块边缘圆角，调整以形成椭圆形状 */"
                "}"

                "QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {"
                    "height: 0px; /* 移除上下按钮 */"
                    "border: none; /* 移除边框 */"
                    "background: transparent; /* 背景透明 */"
               " }"

                "QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {"
                    "background: none; /* 页面滚动部分背景透明 */"
                "}");
    QListWidget::enterEvent(event);
}

void MessageChat::leaveEvent(QEvent *event)
{
//    // 鼠标离开时隐藏滚动条
//    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    //setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    setStyleSheet(
        "QScrollBar:vertical {"
        "    background: transparent;"  // 滚动条轨道透明
        "    width: 8px;"              // 保留滚动条占位空间（避免内容抖动）
        "}"
        "QScrollBar::handle:vertical {"
        "    background: rgba(0, 0, 0, 0);" // 滑块全透明
        "    border: none;"                 // 去除边框
        "    min-height: 10px;"             // 防止滑块高度为0（无意义但需保留）
        "}"
        "QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {"
        "height: 0px; /* 移除上下按钮 */"
        "border: none; /* 移除边框 */"
        "background: transparent; /* 背景透明 */"
        "}"
        "QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {"
        "    background: none;"             // 隐藏滑块外的轨道区域
        "}");
      QListWidget::leaveEvent(event);
}
